/**
 * 给你一个非负整数数组 nums ，你最初位于数组的第一个位置。
 * 数组中的每个元素代表你在该位置可以跳跃的最大长度。
 * 你的目标是使用最少的跳跃次数到达数组的最后一个位置。
 * 假设你总是可以到达数组的最后一个位置。
 */
public class Test45 {
    public static void main(String[] args) {
        int[] nums = {7,0,0};
        System.out.println(jump(nums));
    }
    public static int jump(int[] nums) {

        int steps = 0;
        int max = 0;
        int max_index = 0;// 目前能到达的最远下标

        for (int i = 0; i < nums.length-1; i++) {
            max = Math.max(max,nums[i]+i);
            if (i == max_index){// 当 i走到最大下标,说明已经找到了max的值,更新能达到的最大下标的值,步数加一
                max_index = max;
                steps++;
            }
        }
        return steps;
    }
}
